package com.yt.system.utils;

import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @author SYN
 */
public class TimeUtil {
    /**
     * 获取某一天的下一天
     * @param d
     * @return
     */
    public static Date getNextDate(Date d){
        //以1为乘以的基数
        long addTime=1;
        //1天以后   （如果是30天以后，则这里是30）
        addTime*=1;
        //1天24小时
        addTime*=24;
        //1小时60分钟
        addTime*=60;
        //1分钟60秒
        addTime*=60;
        //1秒=1000毫秒
        addTime*=1000;
        //用毫秒数构造新的日期
        Date date=new Date(d.getTime()+addTime);
        //返回结果
        return date;
    }
    /**
     * 获取当前时间，计算该日期的周一，返回周一与当前日期
     * @return
     */
    public Map<String,Date> getMondayAndCurday(){
        Calendar cal = Calendar.getInstance();
        Map map = new HashMap();
        //获取当前系统时间
        Date curday = new Date();
        map.put("curday",curday);
        cal.setTime(curday);
        //判断要计算的日期是否是周日，如果是则减一天计算周六的，否则会出问题，计算到下一周去了
        //获得当前日期是一个星期的第几天
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
        if(1 == dayWeek) {
            cal.add(Calendar.DAY_OF_MONTH, -1);
        }
        //设置一个星期的第一天，按中国的习惯一个星期的第一天是星期一
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        //获得当前日期是一个星期的第几天
        int day = cal.get(Calendar.DAY_OF_WEEK);
        //根据日历的规则，给当前日期减去星期几与一个星期第一天的差值
        cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-day);
        Date monday = cal.getTime();
        Date tuesday = getNextDate(monday);
        Date wensday = getNextDate(tuesday);
        Date thursday = getNextDate(wensday);
        Date friday = getNextDate(thursday);
        Date saturday = getNextDate(friday);
        Date sunday = getNextDate(saturday);
        map.put("monday",monday);
        map.put("tuesday",tuesday);
        map.put("wensday",wensday);
        map.put("thursday",thursday);
        map.put("friday",friday);
        map.put("saturday",saturday);
        map.put("sunday",sunday);
        return map;
    }

    public static void main(String[] args) {
        TimeUtil a = new TimeUtil();
        a.getMondayAndCurday();
    }
}
